package cn.itcast.nems.studentrecord.dto.studentrecord;

import cn.itcast.nems.studentrecord.constant.ReferenceTypeEnum;
import cn.itcast.nems.studentrecord.enumeration.FundFlowPaymentTypeEnum;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 学籍支付
 */
@Data
public class StudentRecordFundFlowDTO {
    private Long studentRecordFundFlowId;

    /**
     * 是否更新学籍上的已支付金额
     */
    private boolean updateStudentRecord;

    /**
     * 新学籍ID
     */
    private String studentRecordId;

    /**
     * 业务日期;实际收支的发生日期
     */
    private LocalDateTime bizDate;

    /**
     * 参考单据类型;
     */
    private ReferenceTypeEnum referenceType;

    /**
     * 参考单据ID
     */
    private String referenceId;

    /**
     * 参考单据行ID
     */
    private String referenceLineId;

    /**
     * 班级ID
     */
    private Integer clazzId;

    /**
     * 班级名称
     */
    private String clazzName;

    /**
     * 班级阶段
     */
    private String phaseNumber = "1";

    /**
     * 支付类型; 枚举值：在线支付｜ONLINE_PAY、离线支付｜OFFLINE_PAY、退费｜REFUND、退转｜REFUND_TRANSFER、退费退回/冲回｜REFUND_ROLLBACK、费用转移｜FUND_TRANSFER
     */
    private FundFlowPaymentTypeEnum paymentType;

    /**
     * 支付单号;根据凭单类型不同。如果是在线支付则为支付平台内的支付子单号。如果是离线支付则为离线支付单行ID。
     */
    private String paymentNo;

    /**
     * 发生金额;本次发生金额：支付为正，退费为负。单位：分
     */
    private Integer amount;

    /**
     * 支付手续费;手续费：amount*charge_rata/100。单位：分。注：目前只有支付会存在费用。
     */
    private Integer charge;
    /**
     * 手续费费率。
     */
    private BigDecimal chargeRate;

    /**
     * 支付方式
     */
    private String paymentMethodCode;

    /**
     * 支付方式名称
     */
    private String paymentMethodName;

    /**
     * 支付渠道账号
     */
    private String paymentAccountCode;
    /**
     * 支付渠道账号名称
     */
    private String paymentAccountName;

    /**
     * 备注
     */
    private String remark;
    /**
     * 扩展字段
     */
    private String extend1;
    private String extend2;
    private String extend3;
    private String schoolId;    /**
     * 枚举值：单渠道｜0、多渠道｜1。注：当“支付类型”为“在线支付”、“离线支付”时，该值为“否”。当“支付类型”为“退费”、“退转”、“费用转移”时，判断该学籍下已有流水的“支付渠道”是否已有多个，如果有多个，则该值为“是”。如果只有单个，则该值为“否”
     */
    private Boolean multiPaymentAccountFlag;

    /**
     * 原支付渠道账号；在“单渠道”时，必须填写该值。
     */
    private String originPaymentAccountCode;

    /**
     * 原支付渠道名称；在“单渠道”时，必须填写该值。
     */
    private String originPaymentAccountName;
    /**
     * 对应 办理时间
     */
    private LocalDateTime createdDatetime;
}
